10-5 Du夆jkG洏雱峈k

除此之外,我們亦可利用變形法(Transformation),將一數學模型轉換成只包含線性參數的模型。例如,假設一模型為: $$ y=ae^{bx} $$

取自然對數,可得

$$ \ln y = \ln a + bx $$

此時,$\ln a$ 及 $b$ 變成線性參數,我們可用“最小平方法”找出其值,請見下列使用變形法的範例:

Example 1: 10-曲線擬合與迴歸分析/transformFit01.mload data2.txt x = data2(:, 1); % 已知資料點的 x 座標 y = data2(:, 2); % 已知資料點的 y 座標 A = [ones(size(x)) x]; theta = A\log(y); subplot(2,1,1) plot(x, log(y), 'o', x, A*theta); xlabel('x'); ylabel('ln(y)'); title('ln(y) vs. x'); legend('Actual value', 'Predicted value'); a = exp(theta(1)) % 辨識得到之參數 b = theta(2) % 辨識得到之參數 y2 = a*exp(b*x); subplot(2,1,2); plot(x, y, 'o', x, y2); xlabel('x'); ylabel('y'); legend('Actual value', 'Predicted value'); title('y vs. x'); fprintf('誤差平方和 = %d\n', sum((y-y2).^2)); a = 4.3282 b = -1.8235 誤差平方和 = 8.744185e-01

在上述圖形中,第一個小圖是 $\ln y$ 對 $x$ 的作圖,而第二個小則是 $y$ 對 $x$ 的作圖。請特別注意,經由變形法之後,此最小平方法所得到的最小總平方誤差是 $$ E'=\sum_{i=1}^m (\ln y_i - \ln a - bx_i)^2 $$

而不是原模型的總平方誤差: $$ E=\sum_{i=1}^m (y_i - ae^{bx_i})^2 $$

通常 $E'$ 為最小值時,$E$ 不一定是最小值,但通常亦離最小值亦不遠矣!若要精益求精,可再用 fminsearch 求取 $E$ 的最小值,並以(變形後)最小平方法得到的 a 及 b 為搜尋的起點,請見下列範例:

Example 2: 10-曲線擬合與迴歸分析/transformFit02.mload data2.txt x = data2(:, 1); % 已知資料點的 x 座標 y = data2(:, 2); % 已知資料點的 y 座標 A = [ones(size(x)) x]; theta = A\log(y); a = exp(theta(1)) % 辨識得到之參數 b = theta(2) % 辨識得到之參數 theta0 = [a, b]; % fminsearch 的啟始參數 theta = fminsearch(@(x)errorMeasure3(x, data2), theta0); x = data2(:, 1); y = data2(:, 2); y2 = theta(1)*exp(theta(2)*x); plot(x, y, 'o', x, y2); xlabel('x'); ylabel('y'); legend('Actual value', 'Predicted value'); title('y vs. x'); fprintf('誤差平方和 = %d\n', sum((y-y2).^2)); a = 4.3282 b = -1.8235 誤差平方和 = 1.680455e-01

由上述範例可以看出,我們可以先使用變形法,先找出大略的參數值,然後再用 fminsearch 來對誤差平方和進行最小化,因此得到的誤差平方和,會比前一個範例(只用變形法)還要小。(當然,在這個範例中,我們定義了一個必須被最小化的誤差總和函式 errorMeasure3.m,為節省篇幅,其內容不再列出,讀者請自行參考光碟中的檔案。)

事實上,很多看起來是非線性的迴歸模型,經過了一些轉換後,就會變成線性的迴歸模型,因此就可以使用我們這一節所說明的變形法,來進行線性迴歸的參數求取。以下是一些變形法可用的非線性模型,以及相關的轉換方法:

編號 非線性模型 轉換後的線性模型 參數轉換公式
1 $y=\frac{ax}{1+bx}$ $\underbrace{\frac{1}{y}}_Y=\underbrace{\frac{1}{a}}_\alpha \frac{1}{x}+\underbrace{\frac{b}{a}}_\beta$ $a=\frac{1}{\alpha}$, $b=\frac{\beta}{\alpha}$
2 $y=\frac{a}{x+b}$ $\underbrace{\frac{1}{y}}_Y=\underbrace{\frac{1}{a}}_\alpha x+\underbrace{\frac{b}{a}}_\beta$ $a=\frac{1}{\alpha}$, $b=\frac{\beta}{\alpha}$
3 $y=\frac{ax}{x^2+b^2}$ $\underbrace{\frac{1}{y}}_Y=\underbrace{\frac{1}{a}}_\alpha x+\underbrace{\frac{b^2}{a}}_\beta \frac{1}{x}$ $a=\frac{1}{\alpha}$, $b=\pm\sqrt{\frac{\beta}{\alpha}}$
4 $y=ax^b$ $\underbrace{\ln y}_Y = \underbrace{b}_\alpha \ln x + \underbrace{\ln a}_\beta$ $a=e^\beta, b=\alpha$
5 $y=\frac{1}{1+ax^b}$ $\underbrace{\ln \frac{1-y}{y}}_Y = \underbrace{b}_\alpha \ln x + \underbrace{\ln a}_\beta$ $a=e^\beta, b=\alpha$
6 $y=\frac{1}{1+exp\left(\frac{ax}{b+x}\right)}$ $\underbrace{\left[\ln \frac{1-y}{y}\right]^{-1}}_Y=\underbrace{\frac{b}{a}}_\alpha \frac{1}{x}+\underbrace{\frac{1}{a}}_\beta$ $a=\frac{1}{\beta}, b=\frac{\alpha}{\beta}$
7 $y=\ln a + x - \ln (e^x+b)$ $\underbrace{e^{-y}}_Y=\underbrace{\frac{b}{a}}_\alpha e^x+\underbrace{\frac{1}{a}}_\beta$ $a=\frac{1}{\beta}, b=\frac{\alpha}{\beta}$
8 $\frac{x^2}{a^2} + \frac{y^2}{b^2} = 1$ $\underbrace{y^2}_Y=\underbrace{-\frac{b^2}{a^2}}_\alpha x^2+\underbrace{b^2}_\beta$ $a^2=-\frac{\beta}{\alpha}, b^2=\beta$
9 $(x-a)^2+(y-b)^2=c^2$ $\underbrace{x^2+y^2}_Y=\underbrace{2a}_\alpha x+\underbrace{2b}_\beta y+\underbrace{c^2-a^2-b^2}_\gamma$ $a=\alpha/2, b=\beta/2\\c=\gamma+\frac{\alpha^2}{4}+\frac{\beta^2}{4}$
10 $y=a e^{\left[-\left(\frac{x-c}{b}\right)^2\right]}$ $\underbrace{\ln y}_Y = \underbrace{-\frac{1}{b^2}}_\alpha x^2+ \underbrace{\frac{2c}{b^2}}_\beta x+\underbrace{\ln a-\frac{c^2}{b^2}}_\gamma$ $a=exp \left( \gamma - \frac{\beta^2}{4}\right)\\b=\pm \sqrt{-\frac{1}{\alpha}}\\c=-\frac{\beta}{2\alpha}$
11 $y=\frac{a}{\sqrt{(1+bx^2)^2+c}}$ $\underbrace{\frac{1}{y^2}}_Y=\underbrace{\frac{b^2}{a^2}}_\alpha x^4+\underbrace{\frac{2b}{a^2}}_\beta x^2+\underbrace{\frac{c+1}{a^2}}_\gamma$ $a=\pm\frac{\sqrt{4\alpha}}{\beta}\\b=\frac{2\alpha}{\beta}\\c=\frac{4\alpha\gamma}{\beta^2}-1$

MATLAB程式設計:進階篇